Von Beginn an habe ich auf dem Amiga mit dem -Entwicklungssystem
gearbeitet. Die neueste Version 6.3 dieses großartigen Compilers ist
völlig kompatibel mit dem
-Standard und hat eine ganze Reihe
von Auslassungen bezüglich Stil und Sprache bei dem Versuch festgestellt,
den Quelltext neu zu übersetzen. Eine große Aufräumaktion für die
Zusatzquellen in
, insbesondere die Einführung der vollständigen
Prototypen und die Korrektur einiger fehlender Casts, war deshalb notwendig.
Sobald die selbsterzeugte Version 2.7 sauber lief, wurde sie mit der
bekannten Amiga-Umsetzung von Stefan Becker von Fish-Diskette 486
verglichen und erwies sich als derart langsamer, daß Verbesserungen
notwendig waren, um mit diesem System zu wetteifern. Der kritische Kern der
„inneren Schleife`` von wurde in Assembler für den Motorola 68020
umgeschrieben. Dies ergab eine Beschleunigung des Laufzeitverhaltens um etwa
zwanzig bis dreißig Prozent verglichen mit der nichtoptimierten Version und um
etwa fünf bis acht Prozent gegenüber der optimierten Version von Stefan Becker.
Der glänzend bestandene -Test bewies die Korrektheit der gemachten
Änderungen dieser Implementierung, wobei die Testroutine von Don Knuth
tatsächlich den letzten bösen Fehler meiner eigenen Umsetzung fand (der
ausgerechnet etwas mit der Variablen ,
be_careful
` zu tun hatte).
Jedoch zeigte der Augenschein, daß sowohl mein eigenes als auch
das von Stefan Becker Probleme mit der Bildschirmanzeige hatten. Weder die
Implementierung von Stefan Becker noch die von Edmund Mergl arbeiteten so,
wie im ,
book` [4] beschrieben. Besonders die
Testroutine 6test.mf für die Computer Modern Zeichensätze machte
dies deutlich. (Ein Beispiel für diesen Test findet man auf Seite 192
von [4].) Mit einer geänderten Version von amiga.c, die
gleichzeitig einige fortgeschrittene Funktionen für die Ausgabe verwendet
und deshalb auch die Version 2 des Amiga Betriebssystems benötigt, lief
es besser.
Unter Anwendung einiger Ideen von David Crooke aus seiner Amiga-Umsetzung
von TEX 3.141, baute ich eine geänderte Pfadsuche sowie die Möglichkeit
der Speicherkonfiguration in ein.
(Siehe Abschnitt
zu Einzelheiten darüber.)
Im September 1993 wurde dann der erste Schritt in Richtung Version 2.71 getan mit Hilfe der Fehlerbeschreibungen des Addison-Wesley-Verlages. Alle Änderungen, die die neue Version betrafen, wurden in die Change-Datei eingebaut.
Schließlich erhielt ich im Oktober 1993 die offizielle
Version 2.714, die das alte System vollständig ersetzt. Sie enthält ein
neues plain.mf base-Programm und einen völlig neuen -Test.
Die letzte große Änderung dieser Implementation war die Bereitstellung einer
wirklich
Version von
(und von TEX 3.1415), indem max_quarterword auf 32.767 (32 Kilo Viertelworte) und max_halfword
auf 1.073.741.823 (1 Giga Halbworte) erweitert wurde, so daß nun wirklich
niemand mehr an die maximal mögliche Einstellung stoßen wird (Sie
bräuchten schon mehr als 8 Giga Byte freien Speicher!). Dabei scheint
jeder zu glauben, daß ,262.142` als maximaler Wert von memmax
festgelegt sei, nur weil es so in [3] und [5] angegeben
ist. Dieser Wert gilt jedoch nur für 36 Bit Worte. Die vorliegende
-Implementation arbeitet aber auf der Basis von „64 Bit Worten``, das
heißt ein Halbwort ist als long int definiert, so daß die viel
größeren Werte verwendet werden können.